<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>

    <script>

        // function request(url, callback1, callback2) {
        // setTimeout(() => {
        //     if (url === 'F87.php') {
        //         let data = [1, 2, 3, 4, 5]
        //         //请求成功，返回数据
        //         callback1(data)
        //         } else {
        //             //请求失败，返回错误信息
        //             let err = new Error('这是一个错误信息')
        //             callback2(err)
        //         }
        //     }, 3000)
        // }
        // request('F87.java', (data) => {
        //     console.log(data);
        // }, (err) => {
        //     console.log(err);
        // })
        // class Promise {
        //     constructor(foo) {
        //         foo();
        //         // this.foo()
        //     }
        //     then(callback1,callback2){

        //     }
        // }


        //promise

        // new Promise((resolve, reject) => {
        //     //待处理的异步操作
        //     //处理后，成功调用resolve()
        //     //失败就调用reject()
        // }).then(() => {
        //     //成功后的回调函数
        // }, () => {
        //     //失败后的回调函数
        // })

        // new Promise((resolve, reject) => {
        //     let flag = false;
        //     setTimeout(() => {
        //         if (flag) {//成功
        //             let data = [1, 2, 3, 4, 5];
        //             resolve(data);//fulfilled 已成功
        //         } else {//失败
        //             let err = new Error('错误！！！')
        //             reject(err);//rejected 已失败
        //         }
        //     }, 3000)
        // }).then((data) => {
        //     console.log(data);
        // }, (err) => {
        //     console.log(err);
        // }).catch((err)=>{

        // }).finally(()=>{})

        // new Promise((resolve, reject) => {
        //     let data = [1, 2, 3];
        //     resolve(data);//promise状态不可逆
        //     // reject('err')
        //     console.log('data:', data);

        // }).then((data) => {
        //     console.log('data:', data);
        //     return data
        //     // return new Promise((resolve, reject) => {
        //     //     reject('失败！！！！')
        //     // })
        // }, (err) => {
        //     console.log(err);
        // }).then((data2) => {
        //     console.log('data2:', data2);
        //     return data2
        // }, (err) => {
        //     console.log(err);
        // }).then((data3) => {
        //     console.log('data3:', data3);

        // }, (err) => { console.log(err);})

        // let timeout = function (time) {
        //     return new Promise((resolve, reject) => {
        //         setTimeout(() => {
        //             resolve()
        //         }, time)

        //     })
        // }
        // timeout(2000).then(()=>{
        //     console.log(1);
        //     return timeout(2000) 
        // }).then(()=>{
        //     console.log(2);
        //     return timeout(2000)
        // }).then(()=>{
        //     console.log(3);
        //     return timeout(2000)
        // })
        function timer(i) {
            return new Promise((resolve, reject) => {
                setTimeout(() => {
                    resolve(i);
                }, 2000);
            });
        }

        async function timeout() {
            console.log(await timer(1));
            console.log(await timer(2));
            console.log(await timer(3));
            console.log(await timer(4));
        }
        timeout()
    </script>

</body>

</html>